#include "gpio.h"

void gpio_config_out(uint16_t GPIO_Pin)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
 	GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void gpio_config_in(uint16_t GPIO_Pin)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
 	GPIO_Init(GPIOA, &GPIO_InitStructure);
}


void gpio_set(uint16_t GPIO_Pin, uint8_t flag)
{
	if (flag == 0)
	{
		GPIO_ResetBits(GPIOA, GPIO_Pin);
	}
	else
	{
		GPIO_SetBits(GPIOA, GPIO_Pin);
	}
	
}

uint8_t gpio_get_input(uint16_t GPIO_Pin)
{
	return GPIO_ReadInputDataBit(GPIOA, GPIO_Pin);
}
